
//  utils/request.js
//  1. 引入axios对它进行二次的封装
//  1) 设置基地址
//    http://www.bxxx.com/xx/api/接口名1
//    http://www.bxxx.com/xx/api/接口名2
//    基地址可以约定成：http://www.bxxx.com/xx/api/
//  2) 请求拦截器
//  3) 响应拦截器

// 2. 导出封装结果

import axios from 'axios'
// axios.defaults.baseURL = 'XXX'

// 参考： https://www.npmjs.com/package/axios#axioscreateconfig
// 在同一个项目中有可能需要向不同的服务器发请求，即需要设置不同的基地址
// 这里通过axios.create来创建多个不同的axios的实例，以备不时之需
// 在一个普通的.js文件（不是.vue组件）中，如何去获取vuex中的数据？
// 答：直接引入，获取其中的state即可
import store from '@/store/index.js'
console.log('store', store)
// axios.defaults.baseURL = '' // 基地址
const instance = axios.create({
  baseURL: 'http://ttapi.research.itcast.cn',
  timeout: 3000
  // baseURL: 'http://api-toutiao-web.itheima.net',
  // headers: { 'X-Custom-Header': 'foobar' }
})
// 添加请求拦截器
instance1.interceptors.request.use(function (config) {
  // 在发送请求之前
  // 检查在vuex中是否有token信息，如果有，就加到header中
  const token = store.state.tokenInfo.token
  if (token) {
    // 加到header
    //    Bearer空格token  这个格式是后端要求的
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

const instance2 = axios.create({
  baseURL: 'http://api-toutiao-web.itheima.net', // 后端老王同学写的
  timeout: 1000
  // headers: { 'X-Custom-Header': 'foobar' }
})

export {
  instance1, instance2
}
export default instance1

